CONFIG_XML = 'config.xml'
PROJECT_CONFIG = 'ProjectConfig'
PROJECT = 'Project'
PROJECT_NAME = 'name'
PROJECT_HOME = 'location'
DB_CONFIG = 'DBConfig'
DB_PROTOCOL = 'dbprotocol'
DB_HOST = 'dbhost'
DB_USER = 'dbusername'
DB_PASS = 'dbpassword'
DB_NAME = 'dbname'
DB_TABLES = 'DBTables'
KEY = 'key'
COUNT_KEY = 'count_key'
ORDER = 'order'
POSTGRES = 'postgresql'
TABLEELT = 'Table'

LOCATION = 'location'
SEED = 'seed'
SUBSAMPLE = 'subsample'
SEED_DEF = '10'
SUBSAMPLE_DEF = '40000'

MODELCONFIG = 'ModelConfig'
COMP = 'Component'
SUBCOMP = 'SubComponent'
MODEL = 'Model'
NAME = 'name'
FORMULATION = 'formulation'
MODELTYPE = 'type'
FILTER = 'Filter'
FILTERSET = 'FilterSet'
VERTEX = 'vertex'
START = 'start'
END = 'end'
VARIANCE = 'Variance'
VARIABLE = 'Variable'
ALTERNATIVE = 'Alternative'
DEPVARIABLE = 'DependentVariable'
VALUE = 'value'
TABLE = 'table'
COLUMN = 'var'
COND = 'condition'
COEFF = 'coeff'
ID = 'id'
THRESHOLD = 'threshold'
ALTSPEC = 'Alternative Specific'
BRANCH = 'Branch'
PROB = 'Probability'
RUNUNTIL = 'RunUntilCondition'
RUNUNTILSET = 'RunUntilConditionSet'
VTABLE = 'valuetable'
VCOLUMN = 'valuevar'
DMODEL = 'default'

PROB_MODEL = 'Probability Distribution'
COUNT_MODEL = 'Count'
MNL_MODEL = 'Multinomial Logit'
GC_MNL_MODEL = 'Multinomial Logit (Generic Choices)'
ORD_MODEL = 'Ordered Choice'
NL_MODEL = 'Nested Logit'
SF_MODEL = 'Stochastic Frontier'
LOGSF_MODEL = 'Log Stochastic Frontier'
LOGREG_MODEL = 'Log Linear'  # 'Log Regression'
LINEAR_MODEL = 'Linear'
NEGBIN_MODEL = 'Negative Binomial'
POI_MODEL = 'Poisson'
LOGIT = 'Logit'
PROBIT = 'Probit'
IDEN_INDIVIDUAL = "Identify Individual Attributes"
RECON_SCHEDULE = "Reconcile Schedules"
FIXEDACT_SCHEDULE = "Clean Fixed Activity Schedule"
AGGACT_SCHEDULE = "Clean Aggregate Activity Schedule"
CHILD_ALLOCAT = "Child Dependency Allocation"
CHILD_ALLOCAT_TERM = "Child Dependency Allocation Terminal"
CHILD_DEPEND = "Child Dependency"
PERS_TRIP_ARRIVAL = "Persons On Trip Arrival Processing"
IDEN_UNIQUE = "Identify Unique"
SCH_ADJUST = "Schedule Adjustment"

MODELFORM_REG = 'Regression'
MODELFORM_ORD = 'Ordered'
MODELFORM_MNL = 'Multinomial Logit'
MODELFORM_CNT = 'Count'
MODELFORM_NL = 'Nested Logit'
MODELFORM_PD = 'Probability Distribution'

OP_EQUAL = 'equals'
OP_NOTEQUAL = 'not equals'
OP_GT = 'greater than'
OP_GTE = 'greater than equals'
OP_LT = 'less than'
OP_LTE = 'less than equals'
OP_AND = 'And'
OP_OR = 'Or'

TABLE_HH = 'households'
TABLE_PER = 'persons'

COMP_LONGTERM = 'Long Term Models'
COMP_FIXEDACTLOCATION = 'Fixed Activity Location Choices'
COMP_VEHOWN = 'Vehicle Ownership Models'
COMP_FIXEDACTPRISM = 'Fixed Activity Prisms Generator'
COMP_CHILDSTATUS = 'Child Daily Status and Allocation'
COMP_ADULTSTATUS = 'Adult Daily Status'
COMP_ACTSKELRECONCILIATION = 'Activity Skeleton Reconciliation System'
COMP_ACTTRAVSIMULATOR = 'Activity Travel Pattern Simulator'
COMP_ACTTRAVRECONCILIATION = 'Activity Travel Reconciliation System'
COMP_TIMEUSEUTILITY = 'Time Use Utility Calculator'
COMP_MEDIUMTERM = 'Medium Term Models'
COMP_SHORTTERM = 'Short Term Models'


#COMPKEY_LONGTERM = 'LongTermModels'
COMPKEY_VEHOWN = 'VehicleOwnershipModel'
COMPKEY_VEHATTR = 'VehicleAttributeModels'
COMPKEY_PERATTR = 'PersonAttributesRuntime'
COMPKEY_WRKEPISODES = 'WorkEpisodes'
COMPKEY_MORVERTEX = 'MorningVertex'
COMPKEY_EVEVERTEX = 'EveningVertex'
COMPKEY_PRISMSWRKR = 'FixedActivityEpisodes1PrismsWorkers'
COMPKEY_PRISMSWRKR1 = 'FixedActivity2Episodes1PrismsWorkers'
COMPKEY_PRISMSWRKR2 = 'FixedActivity2Episodes2PrismsWorkers'
COMPKEY_PRISMSPRESCH = 'FixedActivityEpisodePrismsPreschoolers'
COMPKEY_PRISMSSCH = 'FixedActivityEpisodePrismsSchoolers'
COMPKEY_DAILYSCHSTATUS = 'DailySchStatus'
COMPKEY_DAILYWRKSTATUS = 'DailyWorkStatus'
COMPKEY_IDENFIXEDVERTICES = 'IdentifyFixedActivityVertices'
COMPKEY_CHILDDEPEND = 'ChildDependency'
COMPKEY_RECONLONGTERM = 'ReconcileLongerTermSchedules'
COMPKEY_CLEANDAILY = 'CleanDailyFixedActivitySchedule'
COMPKEY_AFTSCHACTS = 'AfterSchoolActivities'
COMPKEY_INSERTEPISODE = 'InsertAppropriateTravelEpisodes'
COMPKEY_CLEANAGGREGATE = 'CleanAggregateActivitySchedule'
COMPKEY_CHILDALLOCATE = 'ChildDependencyAllocation'
COMPKEY_CHILDTERMALLOCATE = 'ChildDependencyTerminalAllocation'
COMPKEY_NONMANDATORY = 'DynamicNonMandatoryActivities'
COMPKEY_RECONCILSTRTADJ = 'FinalReconciliationOfActivityTravelStartAdj'
COMPKEY_RECONCILENDADJ = 'FinalReconciliationOfActivityTravelEndAdj'
COMPKEY_EXTRACTEPISODE = 'ExtractTravelEpisodes'
COMPKEY_ARRTIMEPPROCESS = 'ArrivalTimeProcessing'
COMPKEY_OCCUPPROCESS = 'OccupantProcessing'
COMPKEY_EXTRACTEPISODEHH = 'ExtractTravelEpisodesWithHouseholdMembers'
COMPKEY_ODTABLE = 'OD_OutputTable'
COMPKEY_ODTTABLE = 'ODT_OutputTable'

COMPMODEL_NUMVEHS = 'Household Vehicle Count'
COMPMODEL_NUMTYPES = 'Household Vehicle Types'
COMPMODEL_PERATTR = 'Person Attributes'
COMPMODEL_WRKEPISODES = 'Daily Work Episodes'
COMPMODEL_DAYSTART = 'Earliest Day Start Time'
COMPMODEL_DAYEND = 'Latest Day End Time'
COMPMODEL_1WEPISODE = 'One Episode Workers'
COMPMODEL_2WEPISODE1 = 'Two Episode Workers - Episode 1'
COMPMODEL_2WEPISODE2 = 'Two Episode Workers - Episode 2'
COMPMODEL_PRESCHEPISODES = 'Pre-school Episodes'
COMPMODEL_SCHEPISODES = 'School Episodes'
COMPMODEL_SCHSTATUS = 'Daily Pre-school or School Status'
COMPMODEL_WRKDAILYSTATUS = 'Daily Work Status'
COMPMODEL_IDENFIXEDVERTICES = 'Identify Fixed Activity Vertices'
COMPMODEL_CHIDDEPEND = 'Child Dependency'
COMPMODEL_RECONLONGTERM = 'Reconcile Longer Term Schedules'
COMPMODEL_CLEANDAILY = 'Clean Daily Fixed Activity Schedule'
COMPMODEL_AFTSCHACTIVITY = 'After School Activity'
COMPMODEL_INSERTEPISODE = 'Insert Appropriate Travel Episodes'
COMPMODEL_CLEANAGGREGATE = 'Clean Aggregate Activity Schedule'
COMPMODEL_CHILDALLOCATE = 'Child Dependency Allocation'
COMPMODEL_CHILDTERMALLOCATE = 'Child Dependency Terminal Allocation'
COMPMODEL_NONMANDATORY = 'Dynamic Non-Mandatory Activities'
COMPMODEL_RECONCILSTRTADJ = 'Final Reconciliation of Activity Travel Start Adjust'
COMPMODEL_RECONCILENDADJ = 'Final Reconciliation of Activity Travel End Adjust'
COMPMODEL_EXTRACTEPISODE = 'Extract Travel Episodes'
COMPMODEL_ARRTIMEPPROCESS = 'Arrival Time Processing'
COMPMODEL_OCCUPPROCESS = 'Occupant Processing'
COMPMODEL_ODTABLE = 'Origin-Destination Output Table'
COMPMODEL_ODTTABLE = 'Origin-Destination Travel Output Table'


COMPONENTMAP = {}
COMPONENTMAP[COMPKEY_VEHOWN] = [COMPMODEL_NUMVEHS]
COMPONENTMAP[COMPKEY_VEHATTR] = [COMPMODEL_NUMTYPES]
COMPONENTMAP[COMPKEY_PERATTR] = [COMPMODEL_PERATTR]
COMPONENTMAP[COMPKEY_WRKEPISODES] = [COMPMODEL_WRKEPISODES]
COMPONENTMAP[COMPKEY_MORVERTEX] = [COMPMODEL_DAYSTART]
COMPONENTMAP[COMPKEY_EVEVERTEX] = [COMPMODEL_DAYEND]
COMPONENTMAP[COMPKEY_PRISMSWRKR] = [COMPMODEL_1WEPISODE]
COMPONENTMAP[COMPKEY_PRISMSWRKR1] = [COMPMODEL_2WEPISODE1]
COMPONENTMAP[COMPKEY_PRISMSWRKR2] = [COMPMODEL_2WEPISODE2]
COMPONENTMAP[COMPKEY_PRISMSPRESCH] = [COMPMODEL_PRESCHEPISODES]
COMPONENTMAP[COMPKEY_PRISMSSCH] = [COMPMODEL_SCHEPISODES]
COMPONENTMAP[COMPKEY_DAILYSCHSTATUS] = [COMPMODEL_SCHSTATUS]
COMPONENTMAP[COMPKEY_DAILYWRKSTATUS] = [COMPMODEL_WRKDAILYSTATUS]
COMPONENTMAP[COMPKEY_IDENFIXEDVERTICES] = [COMPMODEL_IDENFIXEDVERTICES]
COMPONENTMAP[COMPKEY_CHILDDEPEND] = [COMPMODEL_CHIDDEPEND]
COMPONENTMAP[COMPKEY_RECONLONGTERM] = [COMPMODEL_RECONLONGTERM]
COMPONENTMAP[COMPKEY_CLEANDAILY] = [COMPMODEL_CLEANDAILY]
COMPONENTMAP[COMPKEY_AFTSCHACTS] = [COMPMODEL_AFTSCHACTIVITY]
COMPONENTMAP[COMPKEY_INSERTEPISODE] = [COMPMODEL_INSERTEPISODE]
COMPONENTMAP[COMPKEY_CLEANAGGREGATE] = [COMPMODEL_CLEANAGGREGATE]
COMPONENTMAP[COMPKEY_CHILDALLOCATE] = [COMPMODEL_CHILDALLOCATE]
COMPONENTMAP[COMPKEY_CHILDTERMALLOCATE] = [COMPMODEL_CHILDTERMALLOCATE]
COMPONENTMAP[COMPKEY_NONMANDATORY] = [COMPMODEL_NONMANDATORY]
COMPONENTMAP[COMPKEY_RECONCILSTRTADJ] = [COMPMODEL_RECONCILSTRTADJ]
COMPONENTMAP[COMPKEY_RECONCILENDADJ] = [COMPMODEL_RECONCILENDADJ]
COMPONENTMAP[COMPKEY_EXTRACTEPISODE] = [COMPMODEL_EXTRACTEPISODE]
COMPONENTMAP[COMPKEY_ARRTIMEPPROCESS] = [COMPMODEL_ARRTIMEPPROCESS]
COMPONENTMAP[COMPKEY_OCCUPPROCESS] = [COMPMODEL_OCCUPPROCESS]
COMPONENTMAP[COMPKEY_ODTABLE] = [COMPMODEL_ODTABLE]
COMPONENTMAP[COMPKEY_ODTTABLE] = [COMPMODEL_ODTTABLE]


COMPONENTMAP[COMPMODEL_NUMVEHS] = [COMPKEY_VEHOWN]
COMPONENTMAP[COMPMODEL_NUMTYPES] = [COMPKEY_VEHATTR]
COMPONENTMAP[COMPMODEL_WRKEPISODES] = [COMPKEY_WRKEPISODES]
COMPONENTMAP[COMPMODEL_DAYSTART] = [COMPKEY_MORVERTEX]
COMPONENTMAP[COMPMODEL_DAYEND] = [COMPKEY_EVEVERTEX]
COMPONENTMAP[COMPMODEL_1WEPISODE] = [COMPKEY_PRISMSWRKR]
COMPONENTMAP[COMPMODEL_2WEPISODE1] = [COMPKEY_PRISMSWRKR1]
COMPONENTMAP[COMPMODEL_2WEPISODE2] = [COMPKEY_PRISMSWRKR2]
COMPONENTMAP[COMPMODEL_PRESCHEPISODES] = [COMPKEY_PRISMSPRESCH]
COMPONENTMAP[COMPMODEL_SCHEPISODES] = [COMPKEY_PRISMSSCH]
COMPONENTMAP[COMPMODEL_SCHSTATUS] = [COMPKEY_DAILYSCHSTATUS]
COMPONENTMAP[COMPMODEL_WRKDAILYSTATUS] = [COMPKEY_DAILYWRKSTATUS]
COMPONENTMAP[COMPMODEL_IDENFIXEDVERTICES] = [COMPKEY_IDENFIXEDVERTICES]
COMPONENTMAP[COMPMODEL_CHIDDEPEND] = [COMPKEY_CHILDDEPEND]
COMPONENTMAP[COMPMODEL_RECONLONGTERM] = [COMPKEY_RECONLONGTERM]
COMPONENTMAP[COMPMODEL_CLEANDAILY] = [COMPKEY_CLEANDAILY]
COMPONENTMAP[COMPMODEL_AFTSCHACTIVITY] = [COMPKEY_AFTSCHACTS]
COMPONENTMAP[COMPMODEL_INSERTEPISODE] = [COMPKEY_INSERTEPISODE]
COMPONENTMAP[COMPMODEL_CLEANAGGREGATE] = [COMPKEY_CLEANAGGREGATE]
COMPONENTMAP[COMPMODEL_CHILDALLOCATE] = [COMPKEY_CHILDALLOCATE]
COMPONENTMAP[COMPMODEL_CHILDTERMALLOCATE] = [COMPKEY_CHILDTERMALLOCATE]
COMPONENTMAP[COMPMODEL_NONMANDATORY] = [COMPKEY_NONMANDATORY]
COMPONENTMAP[COMPMODEL_RECONCILSTRTADJ] = [COMPKEY_RECONCILSTRTADJ]
COMPONENTMAP[COMPMODEL_RECONCILENDADJ] = [COMPKEY_RECONCILENDADJ]
COMPONENTMAP[COMPMODEL_EXTRACTEPISODE] = [COMPKEY_EXTRACTEPISODE]
COMPONENTMAP[COMPMODEL_ARRTIMEPPROCESS] = [COMPKEY_ARRTIMEPPROCESS]
COMPONENTMAP[COMPMODEL_OCCUPPROCESS] = [COMPKEY_OCCUPPROCESS]
COMPONENTMAP[COMPMODEL_ODTABLE] = [COMPKEY_ODTABLE]
COMPONENTMAP[COMPMODEL_ODTTABLE] = [COMPKEY_ODTTABLE]

#COMPKEY_FIXEDACTPRISM = 'FixedActivityPrismModels'
#COMPKEY_CHILDSTATUS = 'ChildStatusAllocationModels'
#COMPKEY_MORNNONWRKR = 'MorningVertexNonWorkers'
#COMPKEY_EVENWRKR = 'EveningVertexWorkers'
#COMPKEY_EVENNONWRKR = 'EveningVertexNonWorkers'
#COMPKEY_PRISMSWRKR = 'FixedActivityEpisodePrismsWorkers'
#COMPKEY_PRISMSSCHOOL = 'FixedActivityEpisodePrismsSchoolers'
#COMPKEY_LONGTERMCHOICE = 'LongTermChoice'
#COMPKEY_AFTSCHACTIVE = 'AfterSchoolActivities'


COMPMODEL_SYNTHPOP = 'Generate Synthetic Population'
COMPMODEL_WORKSTAT = 'Labor Force Participation Model'
COMPMODEL_NUMJOBS = 'Number of Jobs'
COMPMODEL_PRIMWORK = 'Primary Worker in the Household'
COMPMODEL_SCHSTAT = 'School Status'
COMPMODEL_RESLOC = 'Residential Location Choice'

COMPMODEL_WORKLOC = 'Work Location Choice'
COMPMODEL_SCHLOC1 = 'School Location: Ages 5-14'
COMPMODEL_SCHLOC2 = 'School Location: Ages 15 and over'
COMPMODEL_PRESCHLOC = 'PreSchool Location: Ages 0-4'


COMPMODEL_WORKSTART = 'Latest Work Arrival Time'
COMPMODEL_WORKEND = 'Earliest Work Departure Time'
COMPMODEL_WORKSTART1 = 'Latest Work Arrival Time\n(Episode 1)'
COMPMODEL_WORKEND1 = 'Earliest Work Departure Time\n(Episode 1)'
COMPMODEL_WORKSTART2 = 'Latest Work Arrival Time\n(Episode 2)'
COMPMODEL_WORKEND2 = 'Earliest Work Departure Time\n(Episode 2)'
COMPMODEL_SCHSTART = 'Latest School Arrival Time'
COMPMODEL_SCHEND = 'Earliest School Departure Time'
COMPMODEL_PRESCHSTART = 'Latest Pre-school Arrival Time'
COMPMODEL_PRESCHEND = 'Earliest Pre-school Departure Time'


# 'Preschool Daily Status'
COMPMODEL_PRESCHDAILYSTATUS = 'Pre-school (0-4 years)'
COMPMODEL_SCHDAILYSTATUS = 'School (5-17 years)'  # 'School Daily Status'
COMPMODEL_HMINDEP = 'Home Independence'
COMPMODEL_SCHDAILYINDEP = 'School Daily Independence'
COMPMODEL_AFTSCHDAILYINDEP = 'After School Daily Independence'
COMPMODEL_AFTSCHACTTYPE = 'After School Activity Type'
COMPMODEL_AFTSCHACTDEST = 'After School Activity Destination'
COMPMODEL_AFTSCHACTDUR = 'After School Activity Duration'
COMPMODEL_AFTSCHJOINTACT = 'Joint Activity Engagement'


COMPMODEL_ASDEPSTAYHM_WRK = 'Working Adult Stay-Home Assignment'
COMPMODEL_ASDEPSTAYHM_NONWORK = 'Non-Working Adult Stay-Home Assignment'
COMPMODEL_ASDEPCHAUFF = 'Adult Chauffeuring Assignment'


COMPMODEL_AFTSCHACTMODE = 'After School Activity Mode for Dependent Children'
COMPMODEL_ACTTYPE = 'Activity Type'
COMPMODEL_ACTDEST = 'Activity Destination'
COMPMODEL_ACTDUR = 'Activity Duration'
COMPMODEL_FIXEDACTMODE = 'Fixed Activity Mode'
COMPMODEL_JOINTACT = 'Joint Activity'
COMPMODEL_TRIPVEH = 'Trip Vehicle'

# Activity Skeleton Reconciliation System
COMPMODEL_ASRECONCIL = 'Activity Skeleton Reconciliation'
COMPMODEL_ASCONST = 'Within person constraints'
COMPMODEL_ASADJUST = 'Adjustments to the activity skeleton based on expected Travel Time from previous day'
# Activity Travel Pattern Simulator
COMPMODEL_SMSLICE = 'Within a time slice'
# Children with after school dependent activities
COMPMODEL_SMACTIVEPURSUE = 'Can activity be pursued jointly with a Household member?'
COMPMODEL_SMACTIVEASSIGNED = 'Activity assigned to a Non-household member comprising Joint Activity with Non-household member'
COMPMODEL_SMASSIGNACTIVE = 'Assign the activity to Household member comprising Joint Activity with household member'
COMPMODEL_AFTSCHACTIVITYMODE = 'Mode choice model for intra-household joint trips with children'
# Adult daily status
COMPMODEL_ASISDEPEND = 'Stay-home and/or Chauffeuring'
COMPMODEL_ASONENWORKER = 'Households with at least one non-working adult'
COMPMODEL_ASHOUSEWORKER = 'Households with all working adults'
COMPMODEL_ASASSIGNHOUSE = 'Assign each dependent child to a household adult subject to the fixed activity schedule'
COMPMODEL_ASDEPENDWORKER = 'Assign all dependent children to a working adult'
COMPMODEL_ASDEPENDNONWORK = 'Assign all dependent children to one non-working adult'
COMPMODEL_ASISWORKER = 'Adult work status'
# All other individuals
COMPMODEL_SMINDIVIDUAL = 'Adult individuals, children with independent activities'
COMPMODEL_SMTRIPTIME = 'Is travel time to next fixed activity \74 time available in the prism?'
COMPMODEL_ACTIVITYTYPE = 'Activity Type Choice; Mode-Destination Choice'
COMPMODEL_SMSTARTTIME = 'Actual start time for the activity'
COMPMODEL_ACTIVITYDURATION = 'Is there enough time to engage in the activity?'
COMPMODEL_SMPROCEED = 'Proceed to next fixed activity'
COMPMODEL_FIXEDACTIVITYMODE = 'Mode Choice to the next fixed activity'
COMPMODEL_SMISHOV = 'Is the mode of the trip HOV?'
COMPMODEL_SMACTIVEPURSED = 'Can activity be pursued jointly with Household members?'
COMPMODEL_JOINTACTIVITY = 'For each available household member, check to see if he/she will join the activity?'
COMPMODEL_SMACTIVENON = 'Joint Activity with Non-household member'
COMPMODEL_SMACTIVEHOUSE = 'Joint Activity with household member'
COMPMODEL_TRIPVEHICLE = 'If mode is SOV or HOV Driver identify vehicle'
COMPMODEL_SMPATTERN = 'Activity-travel patterns for all individuals within the time-slice'
# Activity Travel Reconciliation System
COMPMODEL_ATRECONCIL = 'Activity-travel Pattern Reconciliation'
COMPMODEL_ATPERCONST = 'Within person constraints'
COMPMODEL_ATHOUCONST = 'Within household constraints'
COMPMODEL_ATADJUST = 'Duration adjustment after arrival'

# Daily School Status
COMPMODEL_SCHSTATUSAGE = 'Daily Pre-school Status'
COMPMODEL_SCHSTATUSNON = 'Daily School Status for Non-adults'
COMPMODEL_SCHSTATUSADL = 'Daily School Status for Adults'
# Daily Work Status
COMPMODEL_WRKSTATUSADL = 'Daily Work Status for Adults'
COMPMODEL_WRKSTATUSNON = 'Daily Work Status Non-adults'
COMPMODEL_KIDDEPENDENT = 'Other Kids Dependency'
COMPMODEL_KIDINDEPENDENT = 'Child (greater than 5 years old) Dependency'

# After School Activity Type
COMPMODEL_AFTSCHACTTYPEWRKR = 'Activity Type after School for Workers'
COMPMODEL_AFTSCHACTTYPENON = 'Activity Type after School for Non-workers'
COMPMODEL_AFTSCHACTDUR = 'Activity Duration after School'
COMPMODEL_AFTSCHACTLOC = 'Location for IDOHActivities'
# Dynamic Non-mandatory Activity Type
COMPMODEL_NMANDTYPEWRKR = 'Dynamic NonMandatory Activity Type Adult Worker'
COMPMODEL_NMANDTYPEWRKRSCH = 'Dynamic NonMandatory Activity Type Adult Worker with School'
COMPMODEL_NMANDTYPENON = 'Dynamic NonMandatory Activity Type Adult NonWorkers'
COMPMODEL_NMANDTYPENONSCH = 'Dynamic NonMandatory Activity Type Adult NonWorkers with School'
COMPMODEL_NMANDDURATIONWRKR = 'Dynamic NonMandatory Activity Duration'
COMPMODEL_NMANDDURATIONNON = 'Dynamic NonMandatory Activity Duration'
COMPMODEL_LOCAT400WRKR = 'Dynamic Location IDOHActs'
COMPMODEL_LOCAT400NON = 'Dynamic Location IDOHActs'


MODELKEY_SYNTHPOP = 'SynthPop'
MODELKEY_WORKSTAT = 'WorkStat'
MODELKEY_NUMJOBS = 'NumJobs'
MODELKEY_PRIMWORK = 'PrimWork'
MODELKEY_SCHSTAT = 'SchStat'
MODELKEY_RESLOC = 'ResLoc'

MODELKEY_WORKLOC = 'WorkLoc'
MODELKEY_SCHLOC1 = 'SchLoc1'
MODELKEY_SCHLOC2 = 'SchLoc2'
MODELKEY_PRESCHLOC = 'PreSchLoc'

MODELKEY_DAYSTART_AW = 'MorVtxAW'
MODELKEY_DAYEND_AW = 'EveVtxAW'
MODELKEY_WORKSTART = 'WrkrStart'
MODELKEY_WORKEND = 'WrkrEnd'
MODELKEY_WORKSTART1 = 'WrkrStart1'
MODELKEY_WORKEND1 = 'WrkrEnd1'
MODELKEY_WORKSTART2 = 'WrkrStart2'
MODELKEY_WORKEND2 = 'WrkrEnd2'
MODELKEY_DAYSTART_AN = 'MorVtxAN'
MODELKEY_DAYEND_AN = 'EveVtxAN'
MODELKEY_DAYSTART_NA = 'MorVtxNA'
MODELKEY_DAYEND_NA = 'EveVtxNA'
MODELKEY_SCHSTART = 'SchStart'
MODELKEY_SCHEND = 'SchEnd'
MODELKEY_DAYSTART_PS = 'MorVtxPS'
MODELKEY_DAYEND_PS = 'EveVtxPS'
MODELKEY_PRESCHSTART = 'PreSchStart'
MODELKEY_PRESCHEND = 'PreSchEnd'


MODELKEY_NUMVEHS = 'vehcount'
MODELKEY_VEHTYPE = 'vehtype'
MODELKEY_WRKEPISODES = 'numepisodes'
# Day Start Time
MODELKEY_DAYSTART = 'endtime'
# MODELKEY_DAYSTART1 = 'endtime'
# MODELKEY_DAYSTART2 = 'endtime'
# MODELKEY_DAYSTART3 = 'endtime'
# MODELKEY_DAYSTART4 = 'endtime'
# Day End Time
MODELKEY_DAYEND = 'starttime'
# MODELKEY_DAYEND1 = 'starttime'
# MODELKEY_DAYEND2 = 'starttime'
# MODELKEY_DAYEND3 = 'starttime'
# MODELKEY_DAYEND4 = 'starttime'
# One Work Episode
#MODELKEY_WRKSTART = 'starttime'
#MODELKEY_WRKEND = 'endtime'
# Two Work Episode 1
#MODELKEY_TWOWRKSTART1 = 'starttime'
#MODELKEY_TWOWRKEND1 = 'endtime'
# Two Work Episode 2
#MODELKEY_TWOWRKSTART2 = 'starttime'
#MODELKEY_TWOWRKEND2 = 'endtime'
# Pre-school Start and End Time
#MODELKEY_PSCHOOLSTART = 'starttime'
#MODELKEY_PSCHOOLEND = 'endtime'
# School Start and End Time
#MODELKEY_SCHOOLSTART = 'starttime'
#MODELKEY_SCHOOLEND = 'endtime'
# Daily School Status
MODELKEY_SCHSTATUSAGE = 'dailyschstatus'
MODELKEY_SCHSTATUSAGE0 = 'dailyschstatus0'
MODELKEY_SCHSTATUSAGE1 = 'dailyschstatus1'
MODELKEY_SCHSTATUSAGE2 = 'dailyschstatus2'
MODELKEY_SCHSTATUSAGE3 = 'dailyschstatus3'
MODELKEY_SCHSTATUSAGE4 = 'dailyschstatus4'
MODELKEY_SCHSTATUSNON = 'dailyschstatusnonadults'
MODELKEY_SCHSTATUSADL = 'dailyschstatusadults'

MODELKEY_PRESCHDAILYSTATUS = 'preschdailystatus'
MODELKEY_SCHDAILYSTATUS = 'schdailystatus'
MODELKEY_HMINDEP = 'homeindependence'
MODELKEY_SCHDAILYINDEP = 'schdailyindependence'
MODELKEY_AFTSCHDAILYINDEP = 'afterschdailyindependence'

# Daily Work Status
MODELKEY_WRKSTATUSADL = 'dailyworkstatusadults'
MODELKEY_WRKSTATUSADL1 = 'dailyworkstatusadults1'
MODELKEY_WRKSTATUSADL2 = 'dailyworkstatusadults2'
MODELKEY_WRKSTATUSNON = 'dailyworkstatusnonadults'
MODELKEY_KIDDEPENDENT = 'otherkidsdependency'
# After School Activity Type
MODELKEY_AFTSCHACTTYPENONWRKR = 'aftschactivitytypenonworkers'
MODELKEY_AFTSCHACTTYPEWRKR = 'aftschactivitytypewithwork'
MODELKEY_AFTSCHACTDUR = 'aftschactduration'
MODELKEY_AFTSCHACTLOC = 'locationidohacts'

MODELKEY_AFTSCHACTDEST = 'aftschactdestination'
MODELKEY_AFTSCHJOINTACT = 'aftschjointact'
MODELKEY_WRKDAILYSTATUS = 'workdailystatus'

# Child Daily Status and Allocation Model
MODELKEY_NMANDTYPEWRKR = 'dynamicnonmandatoryactivitytypeadltworkernoschool'
MODELKEY_NMANDTYPEWRKRSCH = 'dynamicnonmandatoryactivitytypeadltworkerwithschool'
MODELKEY_NMANDTYPENON = 'dynamicnonmandatoryactivitytypeadltnonworkerswithnoschool'
MODELKEY_NMANDTYPENONSCH = 'dynamicnonmandatoryactivitytypeadltnonworkerswithschool'
MODELKEY_NMANDDURATIONWRKR = 'dynamicnonmandatoryactduration'
MODELKEY_NMANDDURATIONNON = 'dynamicnonmandatoryactduration'
MODELKEY_LOCAT400WRKR = 'dynamiclocationidohacts'
MODELKEY_LOCAT400NON = 'dynamiclocationidohacts'


MODELSMAP = {}
MODELSMAP[MODELKEY_NUMVEHS] = [COMPMODEL_NUMVEHS]
MODELSMAP[MODELKEY_VEHTYPE] = [COMPMODEL_NUMTYPES]
MODELSMAP[MODELKEY_WRKEPISODES] = [COMPMODEL_WRKEPISODES]

MODELSMAP[MODELKEY_DAYSTART] = [COMPMODEL_DAYSTART]
# MODELSMAP[MODELKEY_DAYSTART1] = [COMPMODEL_DAYSTART]
# MODELSMAP[MODELKEY_DAYSTART2] = [COMPMODEL_DAYSTART]
# MODELSMAP[MODELKEY_DAYSTART3] = [COMPMODEL_DAYSTART]
# MODELSMAP[MODELKEY_DAYSTART4] = [COMPMODEL_DAYSTART]

MODELSMAP[MODELKEY_DAYEND] = [COMPMODEL_DAYEND]
# MODELSMAP[MODELKEY_DAYEND1] = [COMPMODEL_DAYEND]
# MODELSMAP[MODELKEY_DAYEND2] = [COMPMODEL_DAYEND]
# MODELSMAP[MODELKEY_DAYEND3] = [COMPMODEL_DAYEND]
# MODELSMAP[MODELKEY_DAYEND4] = [COMPMODEL_DAYEND]


# MODELSMAP[MODELKEY_WRKSTART] = [COMPMODEL_WORKSTART]
# MODELSMAP[MODELKEY_WRKEND] = [COMPMODEL_WORKEND]
# MODELSMAP[MODELKEY_TWOWRKSTART1] = [COMPMODEL_WORKSTART1]
# MODELSMAP[MODELKEY_TWOWRKEND1] = [COMPMODEL_WORKEND1]
# MODELSMAP[MODELKEY_TWOWRKSTART2] = [COMPMODEL_WORKSTART2]
# MODELSMAP[MODELKEY_TWOWRKEND2] = [COMPMODEL_WORKEND2]
#
# MODELSMAP[MODELKEY_PSCHOOLSTART] = [COMPMODEL_PRESCHSTART]
# MODELSMAP[MODELKEY_PSCHOOLEND] = [COMPMODEL_PRESCHEND]
#
# MODELSMAP[MODELKEY_SCHOOLSTART] = [COMPMODEL_SCHSTART]
# MODELSMAP[MODELKEY_SCHOOLEND] = [COMPMODEL_SCHEND]

MODELSMAP[MODELKEY_SCHSTATUSAGE] = [COMPMODEL_SCHSTATUSAGE]
#MODELSMAP[MODELKEY_SCHSTATUSAGE1] = [COMPMODEL_SCHSTATUSAGE1]
#MODELSMAP[MODELKEY_SCHSTATUSAGE2] = [COMPMODEL_SCHSTATUSAGE2]
#MODELSMAP[MODELKEY_SCHSTATUSAGE3] = [COMPMODEL_SCHSTATUSAGE3]
#MODELSMAP[MODELKEY_SCHSTATUSAGE4] = [COMPMODEL_SCHSTATUSAGE4]
MODELSMAP[MODELKEY_SCHSTATUSNON] = [COMPMODEL_SCHSTATUSNON]
MODELSMAP[MODELKEY_SCHSTATUSADL] = [COMPMODEL_SCHSTATUSADL]

MODELSMAP[MODELKEY_WRKSTATUSADL] = [COMPMODEL_WRKSTATUSADL]
#MODELSMAP[MODELKEY_WRKSTATUSADL2] = [COMPMODEL_WRKSTATUSADL]
MODELSMAP[MODELKEY_WRKSTATUSNON] = [COMPMODEL_WRKSTATUSNON]
MODELSMAP[MODELKEY_KIDDEPENDENT] = [COMPMODEL_KIDDEPENDENT]

MODELSMAP[MODELKEY_AFTSCHACTTYPEWRKR] = [COMPMODEL_AFTSCHACTTYPEWRKR]
MODELSMAP[MODELKEY_AFTSCHACTTYPENONWRKR] = [COMPMODEL_AFTSCHACTTYPENON]
MODELSMAP[MODELKEY_AFTSCHACTDUR] = [COMPMODEL_AFTSCHACTDUR]
MODELSMAP[MODELKEY_AFTSCHACTLOC] = [COMPMODEL_AFTSCHACTLOC]

MODELSMAP[MODELKEY_NMANDTYPEWRKR] = [COMPMODEL_NMANDTYPEWRKR]
MODELSMAP[MODELKEY_NMANDTYPEWRKRSCH] = [COMPMODEL_NMANDTYPEWRKRSCH]
MODELSMAP[MODELKEY_NMANDTYPENON] = [COMPMODEL_NMANDTYPENON]
MODELSMAP[MODELKEY_NMANDTYPENONSCH] = [COMPMODEL_NMANDTYPENONSCH]
MODELSMAP[MODELKEY_NMANDDURATIONWRKR] = [COMPMODEL_NMANDDURATIONWRKR]
MODELSMAP[MODELKEY_NMANDDURATIONNON] = [COMPMODEL_NMANDDURATIONNON]
MODELSMAP[MODELKEY_LOCAT400WRKR] = [COMPMODEL_LOCAT400WRKR]
MODELSMAP[MODELKEY_LOCAT400NON] = [COMPMODEL_LOCAT400NON]

#MODELKEY_AFTSCHACTMODE = 'AftSchActivityMode'
#MODELKEY_ACTTYPE = 'ActivityType'
#MODELKEY_ACTDEST = 'ActDestinationMode'
#MODELKEY_ACTDUR = 'ActivityDuration'
#MODELKEY_FIXEDACTMODE = 'FixedActivityMode'
#MODELKEY_JOINTACT = 'JointActivity'
#MODELKEY_TRIPVEH = 'TripVehicle'
#MODELKEY_TIMESPACE = "TimeSpacePrismVertices"

# Adult Daily Status Model
#MODELKEY_ASISDEPEND = 'DependentAssignedtoHouse'
#MODELKEY_ASHOUSEWORKER = 'HouseWorkAdults'
#MODELKEY_ASDEPENDWORKER = 'AssignDependentWorkAdult'
#MODELKEY_ASADULTHOME = 'WorkfromHome'
#MODELKEY_ASONENWORKER = 'HouseNonWorkAdult'
#MODELKEY_ASDEPENDNONWORK = 'AssignDependentNonWorker'
#MODELKEY_ASASSIGNHOUSE = 'AssignDependentHouse'
#MODELKEY_ASISWORKER = 'AdultisWorker'
#MODELKEY_ASEMPLOYWORK = 'EmployedToworkToday'
#MODELKEY_WORKATHOME = 'WorkAtHome'
#MODELKEY_ASGOTOWORK = 'GoWork'
#MODELKEY_ASNWORKEPISO = 'NoWorkEpisodes'
# Activity Skeleton Reconciliation System
#MODELKEY_ASRECONCIL = 'ActiveSkeletonReconcil'
#MODELKEY_ASCONST = 'PersonConstraint'
#MODELKEY_ASADJUST = 'AdjustActiveSkeleton'
# Activity Travel Pattern Simulator
#MODELKEY_SMSLICE = 'TimeSlice'
# Children with after school dependent activities
#MODELKEY_SMACTIVEPURSUE = 'CanActivePursued'
#MODELKEY_SMACTIVEASSIGNED = 'ActiveAssignedNon-household'
#MODELKEY_SMASSIGNACTIVE = 'AssignAcivityHousehold'
#MODELKEY_AFTSCHACTIVITYMODE = 'AftSchActivityMode'
# All other individuals
#MODELKEY_SMINDIVIDUAL = 'IndividualsActive'
#MODELKEY_SMTRIPTIME = 'TravelTimeNextActivity'
#MODELKEY_ACTIVITYTYPE = 'ActivityType'
#MODELKEY_SMSTARTTIME = 'ActualStartTime'
#MODELKEY_ACTIVITYDURATION = 'ActivityDuration'
#MODELKEY_SMPROCEED = 'ProceedNextActive'
#MODELKEY_FIXEDACTIVITYMODE = 'FixedActivityMode'
#MODELKEY_SMISHOV = 'IsHOV'
#MODELKEY_SMACTIVEPURSED = 'ActivePursued?'
#MODELKEY_JOINTACTIVITY = 'JointActivity'
#MODELKEY_SMACTIVENON = 'JointActiveNon-house'
#MODELKEY_SMACTIVEHOUSE = 'JointActiveHouse'
#MODELKEY_TRIPVEHICLE = 'TripVehicle'
#MODELKEY_SMPATTERN = 'ActiveTravelPattern'
# Activity Travel Reconciliation System
#MODELKEY_ATRECONCIL = 'ActiveTravelReconcil'
#MODELKEY_ATPERCONST = 'PersonConstraint'
#MODELKEY_ATHOUCONST = 'HouseConstraint'
#MODELKEY_ATADJUST = 'DurationAdjust'


MODELMAP = {}

MODELMAP[MODELKEY_NUMVEHS] = [COMPKEY_VEHOWN, MODELKEY_NUMVEHS]
MODELMAP[MODELKEY_VEHTYPE] = [COMPKEY_VEHATTR, MODELKEY_VEHTYPE]

MODELMAP[MODELKEY_DAYSTART_AW] = [COMPKEY_MORVERTEX, 'endtime', 1]
MODELMAP[MODELKEY_DAYSTART_AN] = [COMPKEY_MORVERTEX, 'endtime', 2]
MODELMAP[MODELKEY_DAYSTART_NA] = [COMPKEY_MORVERTEX, 'endtime', 3]
MODELMAP[MODELKEY_DAYSTART_PS] = [COMPKEY_MORVERTEX, 'endtime', 4]

MODELMAP[MODELKEY_DAYEND_AW] = [COMPKEY_EVEVERTEX, 'starttime', 1]
MODELMAP[MODELKEY_DAYEND_AN] = [COMPKEY_EVEVERTEX, 'starttime', 2]
MODELMAP[MODELKEY_DAYEND_NA] = [COMPKEY_EVEVERTEX, 'starttime', 3]
MODELMAP[MODELKEY_DAYEND_PS] = [COMPKEY_EVEVERTEX, 'starttime', 4]

MODELMAP[MODELKEY_WRKEPISODES] = [COMPKEY_PERATTR, 'NumEpisodes']
MODELMAP[MODELKEY_SCHSTATUSAGE0] = [COMPKEY_PERATTR, 'DailySchStatus', 1]
MODELMAP[MODELKEY_SCHSTATUSAGE1] = [COMPKEY_PERATTR, 'DailySchStatus', 2]
MODELMAP[MODELKEY_SCHSTATUSAGE2] = [COMPKEY_PERATTR, 'DailySchStatus', 3]
MODELMAP[MODELKEY_SCHSTATUSAGE3] = [COMPKEY_PERATTR, 'DailySchStatus', 4]
MODELMAP[MODELKEY_SCHSTATUSAGE4] = [COMPKEY_PERATTR, 'DailySchStatus', 5]
MODELMAP[MODELKEY_SCHSTATUSNON] = [COMPKEY_PERATTR, 'DailySchStatusNonAdults']
MODELMAP[MODELKEY_SCHSTATUSADL] = [COMPKEY_PERATTR, 'DailySchStatusAdults']
MODELMAP[MODELKEY_WRKSTATUSADL1] = [
    COMPKEY_PERATTR, 'DailyWorkStatusAdults', 1]
MODELMAP[MODELKEY_WRKSTATUSADL2] = [
    COMPKEY_PERATTR, 'DailyWorkStatusAdults', 2]
MODELMAP[MODELKEY_WRKSTATUSNON] = [COMPKEY_PERATTR, 'DailyWorkStatusNonAdults']
MODELMAP[MODELKEY_KIDDEPENDENT] = [COMPKEY_PERATTR, 'OtherKidsDependency']


MODELMAP[MODELKEY_WORKSTART] = [COMPKEY_PRISMSWRKR, 'starttime']
MODELMAP[MODELKEY_WORKEND] = [COMPKEY_PRISMSWRKR, 'EndTime']
MODELMAP[MODELKEY_WORKSTART1] = [COMPKEY_PRISMSWRKR1, 'starttime']
MODELMAP[MODELKEY_WORKEND1] = [COMPKEY_PRISMSWRKR1, 'EndTime']
MODELMAP[MODELKEY_WORKSTART2] = [COMPKEY_PRISMSWRKR2, 'starttime']
MODELMAP[MODELKEY_WORKEND2] = [COMPKEY_PRISMSWRKR2, 'EndTime']
MODELMAP[MODELKEY_SCHSTART] = [COMPKEY_PRISMSSCH, 'starttime']
MODELMAP[MODELKEY_SCHEND] = [COMPKEY_PRISMSSCH, 'EndTime']
MODELMAP[MODELKEY_PRESCHSTART] = [COMPKEY_PRISMSPRESCH, 'starttime']
MODELMAP[MODELKEY_PRESCHEND] = [COMPKEY_PRISMSPRESCH, 'EndTime']

MODELMAP[MODELKEY_PRESCHDAILYSTATUS] = [
    COMPKEY_DAILYSCHSTATUS, COMPKEY_DAILYSCHSTATUS, 1]
MODELMAP[MODELKEY_SCHDAILYSTATUS] = [
    COMPKEY_DAILYSCHSTATUS, 'DailySchStatusNonAdults']  # COMPKEY_DAILYSCHSTATUS,6]
MODELMAP[MODELKEY_HMINDEP] = [COMPKEY_PERATTR, 'OtherKidsDependency']
MODELMAP[MODELKEY_SCHDAILYINDEP] = [COMPKEY_PERATTR, 'OtherKidsDependency']
MODELMAP[MODELKEY_AFTSCHDAILYINDEP] = [COMPKEY_PERATTR, 'OtherKidsDependency']
MODELMAP[MODELKEY_AFTSCHACTTYPENONWRKR] = [
    COMPKEY_AFTSCHACTS, 'AftSchActivityTypeNonWorkers']
MODELMAP[MODELKEY_AFTSCHACTTYPEWRKR] = [
    COMPKEY_AFTSCHACTS, 'AftSchActivityTypeWithWork']
MODELMAP[MODELKEY_AFTSCHACTDEST] = [COMPKEY_AFTSCHACTS, 'locationIDOHActs']
MODELMAP[MODELKEY_AFTSCHACTDUR] = [COMPKEY_AFTSCHACTS, 'AftSchActDuration']
MODELMAP[MODELKEY_AFTSCHJOINTACT] = [COMPKEY_PERATTR, 'OtherKidsDependency']

#MODELMAP[MODELKEY_WRKDAILYSTATUS] = ['DailyWorkStatus','DailyWorkStatus']
